package com.atiguigu.rabbitmq.one;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer {
    //队列名称
    public static  final String QUEUE_NAME="hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        //连接工厂
        ConnectionFactory factory=new ConnectionFactory();
        //工厂IP 连接RabbitMQ队列
        factory.setHost("127.0.0.1");
        //用户名
        factory.setUsername("guest");
        factory.setPassword("guest");
        //创建连接d对象
        Connection connection = factory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        /*
        * 生成队列
        * 参数：队列名
        *      队列里面的消息是否持久化（默认保存在内存中不持久化）
        *     该队列是否只供一个消费者消费，是否消息共享、true表示多个消费者消费
        *     是否自动删除，最后一个消费者断开连接后，队列是否自动删除
        *     其他参数
         * */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //发消息
        String message="hello world!";

        /*
         * 通过channel管道的basicPublish()将消息发布到管道中，此方法需要四个参数：
          参数1 指定exchange，这里使用“”表示使用默认的交换机
          参数2 指定要发布到哪个队列（在使用默认exchange时）；
          参数3 指定传递的消息所携带的properties，这里使用null
          参数4 指定发布的具体消息，byte[]类型
         * */
         channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        System.out.println("消息发送完毕");
        //4.释放资源
        channel.close();
        connection.close();
    }
}
